package com.augurit.wf.app.document.utils;

import java.util.ArrayList;
import java.util.List;

import org.springside.modules.utils.DozerMapperSingleton;

/**
 * 转换工具类，提供对象属性值互相转换的工具方法，但会带来性能上的损耗
 * 注：基于 Dozer 框架实现，以后可考虑基于CGLIB的实现
 */
public class DozerUtils {
	
	/**
	 * 将源对象转换为所指定目标类的目标对象
	 * @param source 源对象
	 * @param destClass 目标类
	 * @return 目标对象
	 */
	public static Object map(Object source, Class destClass) {
		if(source != null && destClass != null)
			return DozerMapperSingleton.getInstance().map(source, destClass);
		else
			return null;
	}
	
	/**
	 * 将源对象属性值转换到目标对象
	 * @param source 源对象
	 * @param dest 目标对象
	 */
	public static void map(Object source, Object dest) {
		if(source != null && dest != null)
			DozerMapperSingleton.getInstance().map(source, dest);
	}
	
	/**
	 * 将源对象列表转换为所指定目标类的目标对象列表
	 * @param sourceList 源对象列表
	 * @param destClass 目标类
	 * @return 目标对象列表
	 */
	public static List map(List sourceList, Class destClass) {
		if(sourceList != null && sourceList.size() > 0) {
			List destList = new ArrayList();
			
			for(int i=0; i<sourceList.size(); i++) {
				Object obj = map(sourceList.get(i), destClass);
				destList.add(obj);
			}
			
			return destList;
		} else
			return null;
	}
}
